Avoid spurious timer activations in migrate_timer().
authorkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Sat, 22 Apr 2006 09:37:24 +0000 (10:37 +0100)
committerkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Sat, 22 Apr 2006 09:37:24 +0000 (10:37 +0100)
Signed-off-by: Keir Fraser <keir@xensource.com>
xen/common/timer.c

index e62a74ee23578d443f6a8c7cc373eaeb6d8ce1da..10985fdd8b8899fd2c2cb03049b4cbb36043b36e 100644 (file)
@@ -251,12 +251,15 @@ void migrate_timer(struct timer *timer, unsigned int new_cpu)
     }
 
     if ( active_timer(timer) )
+    {
         __stop_timer(timer);
-
-    timer->cpu = new_cpu;
-
-    if ( likely(!timer->killed) )
+        timer->cpu = new_cpu;
         __add_timer(timer);
+    }
+    else
+    {
+        timer->cpu = new_cpu;
+    }
 
     spin_unlock(&timers[old_cpu].lock);
     spin_unlock_irqrestore(&timers[new_cpu].lock, flags);